package com.kobeliu.entity;

import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Set;

/**
 * @Author: Kobe_Liu
 * @Date: 2021/12/9 15:54
 */
public class Demo_76_No309 {

    public static void main(String[] args) {

        int[] prices = new int[]{1,2,3,0,2};
        System.out.println(maxProfit(prices));
    }

    public static int maxProfit(int[] prices) {

        if(prices.length==0) return 0;
        int[][] dp = new int[prices.length][3];
        dp[0][0] = 0;
        dp[0][1] = -prices[0];
        dp[0][2] = 0;

        for(int i=1;i<prices.length;i++){
            //0-不持股 1-持股 2.冷冻期
            //第i天不持股 1.往前两天卖了，也就是前一天冷冻期 2.前一天也没持股
            dp[i][0] = Math.max(dp[i-1][0],dp[i-1][2]);
            //第i天持股 1.前一天持股 2.前一天没持股，今天买入(-)
            dp[i][1] = Math.max(dp[i-1][0]-prices[i],dp[i-1][1]);
            //冷冻期 1.前一天持股，今天卖了
            dp[i][2] = dp[i-1][1] + prices[i];
        }
        Set<Integer> set = new HashSet<Integer>();
        //最后最大利润为最后一天，不持有股票或者进入冷冻期的情况
        return Math.max(dp[prices.length-1][0], dp[prices.length-1][2]);

    }
}

